草庐IT

c++ - Clang、std::next、libstdc++ 和 constexpr-ness

全部标签

c++ - std::map emplace 因显式构造函数而失败

classA{public:explicitA(intx){}};vectorv;v.push_back(1);//compilererrorsincenoimplicitconstructorv.emplace_back(1);//callsexplicitconstructor以上来自video大卫·斯通。我不明白的是为什么emplace_back调用显式构造函数?我在C++标准中看不到任何内容使这合法。只有在听了DavidStone的youtube视频后,我发现了这件事。现在,我对std::map进行同样的尝试。mapm;m.insert(pair(1,2));//compile

c++ - 将 constexpr 结构转换为运行时结构

我正在尝试使用模板类(此处为Foo),其基本类型如下:hana::tuple,Runtime>>与Runtime一个显然不能是constepxr的类.但是类型可以用多种方式构造,这就是我使用的原因:hana::tuple,hana::type>>在编译时完成工作。所以问题基本上是如何从第一个元组类型转换为第二个元组类型。不知hana里面有没有东西那可以帮助我。或者更好的是,关于这种“转换”的一些技巧。namespacehana=boost::hana;usingnamespacehana::literals;structRuntime{std::vectordata;};templat

c++ - 在 std::cout 中递增变量时指针不显示更新值

这个问题在这里已经有了答案:Orderofevaluationofargumentsusingstd::cout(5个答案)Strangeoutput,notasexpected(2个答案)Undefinedbehaviorandsequencepoints(5个答案)关闭5年前。#include#includeusingnamespacestd;intmain(){inta=5;int&b=a;int*c=&a;cout输出:案例1:ais5.bis5.cis5.ais10.bis10.cis10.案例2:ais5.bis5.cis5.ais11.bis11.cis10.案例3:ai

c++ - std::bitset 散列函数算法

有谁知道bitset的哈希函数使用的是什么算法,这是来自网站:http://en.cppreference.com/w/cpp/utility/bitset/hash#include#include#includeintmain(){std::bitsetb1(1);std::bitsetb2(2);std::bitsetb3(b2);std::bitsetb4(8);std::cout>hash_fn;size_th1=hash_fn(b1);size_th2=hash_fn(b2);size_th3=hash_fn(b4);std::cout输出是10004334672815104

c++ - 从相同的硬编码字符串文字初始化 std::string 和 std::wstring

我正在编写一些单元测试时偶然发现了一个已经成功困扰我几次的场景。我需要生成一些字符串来测试JSON编写器对象。由于作者同时支持UTF16和UTF8输入,所以我想用这两种输入进行测试。考虑以下测试:classUTF8;classUTF16;templatevoidwriteJson(std::map&data){//Writetofile}voidgenerateStringData(std::map&data){data.emplace("Lorem","LoremIpsumissimplydummytextoftheprintingandtypesettingindustry.");

c++ - 如何使用 clang libc++ 进行静态链接

我刚刚用c++2a写了一个coroutine的测试代码。我使用clang5.0构建代码:clang++testcoroutine.cpp-std=c++2a-I../asio_alone-fcoroutines-ts-stdlib=libc++代码运行良好。现在我想静态链接libc++。这样我就可以在其他PC上运行a.out,我用谷歌搜索但只找到了-static-libstdc++。我不能使用-static-libstdc++因为libstdc++不支持coroutine。如果我使用-static-libstdc++:clang++testcoroutine.cpp-std=c++2a

c++ - 我对 std::fixed 的使用缺少什么?

我正在编写一个程序来模拟plinko板,在该程序中我有一个函数可以输出分配给每个插槽的钱。我正在尝试使用std::fixed和std::setprecision输出每个值,小数点后有两个零,但每个值的输出就像我根本没有使用fixed一样。我错过了什么?这是我的代码:#include#includeusingnamespacestd;voidChipsAllSlots(intnumChips){constintNUM_SLOTS=9;constintslotWinnings[NUM_SLOTS]={100,500,1000,0,10000,0,1000,500,100};for(inti

c++ - 使用 "if constexpr"防止元组越界

以下代码在GCC和Clang下编译良好,但在VisualStudio(/std:c++latest)的最新更新中停止工作:#includetemplatevoidcheck_tuple(T...types){ifconstexpr(pos>::type;}}intmain(){check_tuple(1.0,1.0);check_tuple(1.0,1.0);}在最新版本的VisualStudio(/std:c++latest)中,编译失败,元组索引越界(std::tuple_element>)。是否可以像这样使用constexpr来防止元组越界? 最佳答案

c++ - 奇怪的 C++ namespace 解析怪癖和 g++ 与 clang++

这个问题在这里已经有了答案:Injectedclassnamecompilerdiscrepancy(3个答案)关闭4年前。这始于观察。我更改了一些看起来有点像这样的代码(编辑:我在这里取出了指定的初始化器,它们也不在原始代码中):structS{enumE{E1,E2}member;}//file1.ccSv1={S::E1};//file2.ccSv2={S::S::E2};请注意file2.cc过度限定了E2。然而,这在g++和clang++中都有效。(编辑2:这个特定VM上的g++是g++-5.4.1,但原始代码已经通过早期和后来的g++版本,加上多个clang版本。)事实上,

c++ - std::mutex::try_lock 虚假地失败?

也许I'mmisunderstanding关于std::mutex::try_lock:即使互斥量当前未被任何其他线程锁定,此函数也允许虚假地失败并返回false。这意味着如果没有一个线程锁定那个mutex,当我尝试一个try_lock时它可能返回false?为了什么目的?try_lock函数是否在锁定时返回falseOR如果没有人锁定它则返回true?不太确定我的非母语英语是否在愚弄我...... 最佳答案 Thismeansthatifnoonethreadhasalockofthatmutex,whenItryatry_loc